上一篇我們講完了Agent以及他的相關對象的關係,
今天我們就來介紹一些不同的AgentType!
那我們就馬上來實做看看吧,首先我們來看看Zero-Shot React Description
這邊我們已一個做一個簡單的計算系統當作例子
首先我們先將數學運算的function以及Tool創建出來,創了計算平方根以及平方的func,並將相對應的tool對象建立出來
from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
from langchain_community.chat_models.ollama import ChatOllama
import math
def calculate_sqrt(input_text: str) -> str:
try:
number = float(input_text.strip())
result = math.sqrt(number)
return f"The square root of {number} is {result}."
except ValueError:
return "Please provide a valid number."
def calculate_square(input_text: str) -> str:
try:
number = float(input_text.strip())
result = number ** 2
return f"The square of {number} is {result}."
except ValueError:
return "Please provide a valid number."
# 創建tool
sqrt_tool = Tool(
name="SquareRootCalculator",
func=calculate_sqrt,
description="Calculate the square root of a number."
)
square_tool = Tool(
name="SquareCalculator",
func=calculate_square,
description="Calculate the square of a number."
)
這邊要注意一下,模型在做決策的時候,是根據tool的**name**以及**description**這兩個屬性,所以這邊就要將名稱及功能寫清楚
。
接著就將agentExecutor寫出來並指定llm、工具、agentType等等
# LLM - ChatOllama
llm = ChatOllama(model="llama3")
# AgentExecutor
agent_executor = initialize_agent(
tools=[sqrt_tool, square_tool], # 指定工具
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, # AgentType
verbose=True
)
# AgentExecutor 運行
question = "What is the square root of 25?"
response = agent_executor.run(question)
print(response)
這樣agent就會調用適合的tool並回傳結果啦!
接下來我們會繼續實作其他AgentType!